package model.dominio;

import utilitario.ValidaException;
import java.util.HashMap;

public class TipoVeiculo {

    private int codigo = 0;
    private double precoBase;
    private double precoKm;
    private String tipo;
    private double taxaUnica;

    public TipoVeiculo(String tipo, double precoBase, double precoKm, double taxaUnica) {
        this.precoBase = precoBase;
        this.precoKm = precoKm;
        this.tipo = tipo;
        this.taxaUnica = taxaUnica;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public int getCodigo() {
        return this.codigo;
    }

    public double getPrecoBase() {
        return this.precoBase;
    }

    public double getPrecoKm() {
        return this.precoKm;
    }

    public String getTipo() {
        return this.tipo;
    }

    
    /**
     * @return the taxaUnica
     */
    public double getTaxaUnica() {
        return taxaUnica;
    }

    /**
     * @param taxaUnica the taxaUnica to set
     */
    public void setTaxaUnica(double taxaUnica) {
        this.taxaUnica = taxaUnica;
    }

    public static TipoVeiculo stringToObject(String dados) throws ValidaException {
        if (!dados.isEmpty()) {
            dados = dados.substring(1, dados.length() - 1);
            String aux[] = dados.split(">,<"), aux2[];
            HashMap<String, String> c = new HashMap<String, String>();
            for (int i = 0; i < aux.length; i++) {
                aux2 = aux[i].split("=");
                c.put(aux2[0], aux2[1]);
            }
            TipoVeiculo tipo = new TipoVeiculo(c.get("tipo"), Double.parseDouble(c.get("precoBase")), Double.parseDouble(c.get("precoKm")),Double.parseDouble(c.get("taxaUnica")));
            tipo.setCodigo(Integer.parseInt(c.get("codigo")));
            return tipo;
        } else {
            throw new ValidaException("O tipo de veiculo não existe, busque novamente");
        }
    }

    @Override
    public String toString() {
        if (this.codigo > 0) {
            return "<codigo=" + String.format("%06d", this.codigo) + ">,<tipo=" + this.tipo + ">,<precoKm=" + this.precoKm + ">,<precoBase=" + this.precoBase + ">,<taxaUnica=" + this.taxaUnica + ">";
        }
        return "<tipo=" + this.tipo + ">,<precoKm=" + this.precoKm + ">,<precoBase=" + this.precoBase + ">,<taxaUnica=" + this.taxaUnica + ">";
    }

}